
Security News
Node.js TSC Votes to Stop Distributing Corepack
Corepack will be phased out from future Node.js releases following a TSC vote.
@thi.ng/heaps
Advanced tools
Various heap implementations for arbitrary values and with customizable ordering
This project is part of the @thi.ng/umbrella monorepo.
Various heap implementations for arbitrary values and with customizable ordering.
Type agnostic Heap and Priority Queue implementations with customizable
ordering and fanout / tree arity (in case of DHeap
) and largely unified API:
Heap
)DHeap
)PairingHeap
)PriorityQueue
)STABLE - used in production
Search or submit any issues for this package
yarn add @thi.ng/heaps
// ES module
<script type="module" src="https://unpkg.com/@thi.ng/heaps?module" crossorigin></script>
// UMD
<script src="https://unpkg.com/@thi.ng/heaps/lib/index.umd.js" crossorigin></script>
Package sizes (gzipped, pre-treeshake): ESM: 1.97 KB / CJS: 2.04 KB / UMD: 2.12 KB
import { defDHeap } from "@thi.ng/heaps";
// with initial values, custom comparator and heap arity
const h = defDHeap<number>(
[5, 2, 10, 15, 18, 23, 22, -1],
{
// custom comparator
compare: (a, b) => b - a,
// branch size (DHeap only)
d: 4
}
);
h.pop();
// 23
h.pop();
// 22
// insert new value unless it's a new root
// else pop and return current root
h.pushPop(16)
// 18
h.push(24);
Even though all provided heap implementations support arbitrary values and
comparators and could be used as-is to implement a priority queue, since v1.3.0
this package also includes a dedicated
PriorityQueue
class, a thin veneer wrapper for a backing Heap
and exposing a PQ-like API for
arbitrary values, with configurable value equality handling and priority
ordering:
peek()
and/or peekPriority()
without removing it from the queueinto()
// use default config
const queue = defPriorityQueue();
// add items
queue.push(["alice", 5]);
queue.into([["bob", 3], ["charlie", 10], ["dora", 8]]);
// peek at top priority item
queue.peek()
// "charlie"
queue.peekPriority()
// 10
// reprioritize
queue.reprioritize("alice", 20)
// retrieve & remove top priority item
queue.pop()
// "alice"
Karsten Schmidt
If this project contributes to an academic publication, please cite it as:
@misc{thing-heaps,
title = "@thi.ng/heaps",
author = "Karsten Schmidt",
note = "https://thi.ng/heaps",
year = 2017
}
© 2017 - 2021 Karsten Schmidt // Apache Software License 2.0
FAQs
Various heap implementations for arbitrary values and with customizable ordering
The npm package @thi.ng/heaps receives a total of 563 weekly downloads. As such, @thi.ng/heaps popularity was classified as not popular.
We found that @thi.ng/heaps demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Corepack will be phased out from future Node.js releases following a TSC vote.
Research
Security News
Research uncovers Black Basta's plans to exploit package registries for ransomware delivery alongside evidence of similar attacks already targeting open source ecosystems.
Security News
Oxlint's beta release introduces 500+ built-in linting rules while delivering twice the speed of previous versions, with future support planned for custom plugins and improved IDE integration.